Ext.onReady(function() {
	var thistab = Ext.get('用户管理'); // 取得本页面要放置在主页面的tab页
	thistab.clean(true);

	// 添加的无窗口对象必须有renderTo属性为 thistab
	// 定义一个ColumnModel，表头中有四列

	var pageNo, pageCount; // 当前面和每页记录数
	var totalCount, totalPage; // 总记录数和总页数
	var params;

	var sm = new Ext.grid.CheckboxSelectionModel();
	// 定义一个ColumnModel，表头中有四列
	var cm = new Ext.grid.ColumnModel([
			new Ext.grid.RowNumberer(),// 自动行号
			sm,// 添加的地方
			{
				header : '编号',
				dataIndex : 'id'
			}, {
				header : '用户名',
				dataIndex : 'username'
			}, {
				header : '用户密码',
				dataIndex : 'userpass'
			}, {
				header : '描述',
				dataIndex : 'memo',
				width : 200
			}, {
				header : '用户ID',
				dataIndex : 'userid',
				width : 200
			}]);
	cm.defaultSortable = true;

	// JsonData

	var data;
	// var
	// data={"list":[{"id":3,"memo":null,"userid":null,"username":"admin","userpass":"21232f297a57a5a743894a0e4a801fc3"},{"id":2,"memo":null,"userid":null,"username":"zhang","userpass":"92aaf389bacfddfc320e424109bae45f"},{"id":1,"memo":null,"userid":null,"username":"wang","userpass":"e08392bb89dedb8ed6fb298f8e729c15"}]};
	// ds使用的MemoryProxy对象和JsonReader对象
	var ds = new Ext.data.Store({
				proxy : new Ext.data.MemoryProxy(data),
				reader : new Ext.data.JsonReader({
							root : 'list'
						}, [{
									name : 'id'
								}, {
									name : 'memo'
								}, {
									name : 'userid'
								}, {
									name : 'username'
								}, {
									name : 'userpass'
								}])
			});

	ds.load();

	// ds.load();

	// 构造 tbar 和 bbar

	// 构造要显示的效果 ds, cm, sm 是必须的 renderTo 需要设置为 thistab
	// autoHeight为true,否则少一行
	var grid = new Ext.grid.GridPanel({
		ds : ds,
		cm : cm,
		sm : sm,
		loadMask : {
			msg : '加载用户信息'
		},
		renderTo : thistab,
		autoHeight : true,
		tbar : new Ext.Toolbar([{
					iconCls : 'x-dd-drop-ok-add',
					text : '增加',
					handler : add
				}, {
					iconCls : 'modi',
					text : '修改',
					handler : modify
				}, {
					iconCls : 'delete',
					text : '删除',
					handler : deleteRows
				}, {
					iconCls : 'x-tbar-loading',
					text : '刷新',
					handler : function() {
						getData(getPageNo(), getPageCount(), getCondi());
					}
				}, {
					iconCls : 'query',
					text : '条件查询',
					handler : function() { /* 弹出新窗口添加新记录 */
					}
				}, {
					iconCls : 'query',
					text : '导出EXCEL',
					handler : function() { /* 导出Excel */
					}
				}, '-', '->', new Ext.form.TextField({
							value : '输入用户名',
							id : 'txtFind',
							width : 80,
							listeners : {
								focus : function(t) {
									if (t.value == '输入用户名')
										t.setValue('');
								},
								change : function(t, n, o) {
									t.setValue(n);
								}
							}
						}), {
					iconCls : 'x-form-field-wrap',
					text : '快速查找',
					handler : function() {
						// var findstr = Ext.getCmp('txtFind').value;
						var findstr = Ext.getCmp('txtFind').value;
						// Ext.MessageBox.alert('',grid.getStore().getCount());
						// Ext.MessageBox.alert(findstr, findstr);
						// grid.getSelectionModel().selectAll();
						// alert('all');
						for (var i = 0; i < grid.getStore().getCount(); i++)
							if (grid.getStore().getAt(i).get('username') == findstr) {
								grid.getSelectionModel().selectRow(i); // 选中要查询的行
							}
						// var records =
						// grid.getSelectionModel().getSelections();
						// if (records.length == 0) {
						// Ext.Msg.alert("提示", "请选择抽取的行");
						// ruturn;
						// }
						// for (var i = 0; i < records.length; i++) {
						// var record = grid.getStore().getAt(i);
						// addRecord.push(record.data)
						// }

					}
				}]),
		bbar : [{
					iconCls : 'x-tbar-page-first',
					handler : function() {
						getData(1, getPageCount(), getCondi());
					}
				},
				// 使用图标为first(index.html-style中定义)
				// handler :当点击此按钮时触发事件,调用getData方法
				{
					iconCls : 'x-tbar-page-prev',
					handler : function() {
						// ccount = Ext.getCmp('txtCount').value;
						getData(getPageNo() - 1, getPageCount(), getCondi());
					}
				}, '第', new Ext.form.TextField({
							value : '1',
							id : 'txtPage',
							width : '20',
							listeners : {
								change : function(txt, n, o) {
									if (n > 0 && n < totalPage)
										getData(n, getPageCount(), getCondi());
								}
							}
						}), '页', {
					iconCls : 'x-tbar-page-next',
					handler : function() {
						// ccount = Ext.getCmp('txtCount').value;
						// getData(selectNode, cpage + 1, ccount);
						getData(getPageNo() + 1, getPageCount(), getCondi());
					}
				}, {
					iconCls : 'x-tbar-page-last',
					handler : function() {
						// ccount = Ext.getCmp('txtCount').value;
						getData(totalPage, getPageCount(), getCondi());
					}
				}, '-', {
					iconCls : 'x-tbar-loading',
					handler : function() {
						// ccount = Ext.getCmp('txtCount').value;
						getData(getPageNo(), getPageCount(), getCondi());
					}
				}, '-', '每页显示', new Ext.form.TextField({
							value : '25',
							id : 'txtCount',
							width : '25',
							listeners : {
								change : function(txt, n, o) {
									getData(getPageNo(), n, getCondi());
								}
							}
						}), '条数据', '->', ' 共', new Ext.form.Field({
							value : '',
							width : 30,
							id : 'txtTotalPage'
						}), '页　', new Ext.form.Field({
							value : '',
							width : 40,
							id : 'txtTotalCount'
						}), '条数据'],

		title : '用户列表'
	});

	grid.render();
	params = '';
	getData(1, 25, ''); // 首次载入时自动取得第一页数据

	// grid.addListener('cellclick', cellclick);
	// function cellclick(grid, rowIndex, columnIndex, e) {
	// var record = grid.getStore().getAt(rowIndex); // Get the Record
	// //Ext.MessageBox.alert(rowIndex,columnIndex);
	// var fieldName = grid.getColumnModel().getDataIndex(columnIndex); // Get
	// field name
	// Ext.MessageBox.alert(fieldName);
	// var data = record.get(fieldName);
	// //Ext.MessageBox.alert('show', '当前选中的数据是' + data);
	//		
	//		
	// }

	// 以下为取得分页数据需要的方法
	function getData(pageNo, pageCount, condi) {
		params = '';
		params += 'pageNo=' + pageNo;
		params += '&pageCount=' + pageCount;
		params += '&condi=' + condi;
		// alert(params);
		// params='pageNo=2&pageCount=25';
		var MyAjax = new Ajax('.\/json\/userMan.action', {
					method : 'post',
					data : params,
					onComplete : function() {
						process(this.response.text);
					}
				});
		MyAjax.request();
	}

	//处理查询返回的数据
	function process(string) {
		var myObject = Json.evaluate(string);
		data = myObject.pi;
		// alert(data);
		pageNo = myObject.pi.pageNo;
		pageCount = myObject.pi.pageCount;
		totalPage = myObject.pi.totalPage;
		totalCount = myObject.pi.totalCount;
		// 刷新数据
		ds.loadData(data);

		// 刷新状态栏数据
		Ext.getCmp('txtPage').setValue(pageNo);// 设置工具条中页文本内容为1
		Ext.getCmp('txtCount').setValue(pageCount);// 设置工具条中个数文本内容为25
		Ext.getCmp('txtTotalCount').setValue(totalCount);
		Ext.getCmp('txtTotalPage').setValue(totalPage);
	}

	// var myAjax = new Ajax('.\/json\/userMan.action', {
	// method : 'post',
	// data : params,
	// onComplete : function() {
	// // url:请求位置 method:请求方式 可以使用get或post data:请求数据
	// // onComplete:当异步调用完成时调用的方法,即响应内容完全获得后调用该方法
	// //alert(this.response.text);
	// var myObject= Json.evaluate(this.response.text);
	// // 将返回的响应数据转换为JS对象,返回数据为JSON格式,Json对象(mootools提供)
	// //data = this.response.text;
	// data=myObject.pi;
	// //alert(data);
	// pageNo=myObject.pageNo;
	// pageCount=myObject.pageCount;
	// totalPage=myObject.totalPage;
	// totalCount=myObject.totalCount;
	// //刷新数据
	// ds.loadData(data);
	//			
	// //刷新状态栏数据
	// Ext.getCmp('txtPage').setValue(pageNo);// 设置工具条中页文本内容为1
	// Ext.getCmp('txtCount').setValue(pageCount);// 设置工具条中个数文本内容为25
	// Ext.getCmp('txtTotalCount').setValue(totalCount);
	//			
	// //alert('end load ds');
	// }
	// });
	// myAjax.request();// 发送ajax异步请求
	function add()
	{
		modiRec(false);
	}
	
	function modify()
	{
		modiRec(true);
	}
	
	function modiRec(ismodi) {
		Ext.QuickTips.init();// 支持tips提示
		Ext.form.Field.prototype.msgTarget = 'qtip';// 提示的方式，枚举值为"qtip","title","under","side",id(元素id)
		Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';
		Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
		
		var userid,username,id,memo,userpass;
		if(ismodi)
		{
			if(grid.getSelectionModel().getCount()!=1)
			{
				Ext.MessageBox.alert('提示','请选择一行记录进行修改');
				return;
			}
			var record=grid.getSelectionModel().getSelected();
			userid=record.get('userid');
			username=record.get('username')
			;
			id=record.get('id');
			memo=record.get('memo');
			userpass=record.get('userpass');
			
		}
		
		var userFormPanel = new Ext.FormPanel({
					labelWidth : 75, // label settings here cascade unless
					// overridden
					url : '.\/json\/userMan.action',
					frame : true,
					bodyStyle : 'padding:5px 5px 0',
					width : 350,
					defaults : {
						width : 230
					},
					defaultType : 'textfield',

					items : [{
								fieldLabel : '用户名',
								name : 'username',
								value:username,
								allowBlank : false,								
								blankText : '用户名不能为空！'
							}, {
								fieldLabel : '用户密码',
								name : 'userpass',
								value:userpass,
								inputType : 'password'
							}, new Ext.form.NumberField({
								fieldLabel : '用户ID',
								name : 'userid',
								value:userid,
								emptyText :'用户ID必须为数字',
								decimalPrecision :0,
								allowNegative :false
								
							}), {
								fieldLabel : '描述',
								value:memo,
								name : 'memo'
							}, {
								fieldLabel : 'ID',
								name:'id',
								value:id,
								inputType : 'hidden'

							}, {
								fieldLabel : 'command',
								name:'command',
								inputType : 'hidden',
								value : 'add'

							}]
				});

		var userForm = userFormPanel.getForm();
		// 弹出增加记录的窗口
		var win = new Ext.Window({
					title : '增加用户',
					layout : 'fit',
					// width : 400,
					height : 210,
					closeAction : 'close',
					plain : true,
					items : userFormPanel,

					buttons : [{
								text : '保存',
								handler : save
							}, {
								text : '取消',
								handler : function() {
									win.hide();
								}
							}]
				});
		win.show();

		function save() {			
			userForm.submit({
						waitMsg : '正在保存，请稍等...',
						// reset : true,
						method : 'POST',
						success : Success,
						failure : Failure
					});
			function Success(form, action) {
				
				win.hide();
				Ext.MessageBox.alert('提示', '保存成功！');
				// 重新查询所有数据
				getData(1, getPageCount(), '');
			}
			function Failure(form, action)  {
				
				Ext.MessageBox.alert('失败！', action.result.rtntxt);
			}

		}

	}
	
	

	// 删除选定的行
	function deleteRows() {
		if (grid.getSelectionModel().getCount() < 1) {
			Ext.MessageBox.alert('提示', '没有选中行');
			return;
		}
		Ext.MessageBox.confirm('确认删除', '确定要删除选中的行吗?', del);

		// 重新查询数据

	}

	function del(btn) {
		if (btn == 'no')
			return;

		alert(' after return');
		var ids = '';
		var sele = grid.getSelectionModel().getSelections();
		for (var i = 0; i < sele.length; i++)
			ids += sele[i].get('id') + ',';
		deleteSelected(ids);

	}

	function deleteSelected(ids) {
		params = '';
		params += 'pageNo=' + getPageNo();
		params += '&pageCount=' + getPageCount();
		params += '&condi=' + getCondi();
		params += '&command=' + 'dele';
		params += '&ids=' + ids;
		// alert(params);
		// params='pageNo=2&pageCount=25';
		var MyAjax = new Ajax('.\/json\/userMan.action', {
					method : 'post',
					data : params,
					onComplete : function() {
						var myObject = Json.evaluate(this.response.text);
						if (myObject.result == true)
							Ext.MessageBox.alert('提示', '删除成功！');
						else
							Ext.MessageBox.alert('提示', '删除失败！');

						// 删除完成后重新查询当前页数据
						getData(getPageNo(), getPageCount(), getCondi());
					}
				});
		MyAjax.request();
	}

	function getPageNo() {
		return Ext.getCmp('txtPage').value;
	}
	function getPageCount() {
		return Ext.getCmp('txtCount').value;
	}

	function getParams() {
		params = '';
		params += 'pageNo=' + getPageNo();
		params += '&pageCount=' + getPageCount();

		return params;
	}

	function getCondi() {
		return '';
	}
		// 更改显示效果的函数
		// function changeSex(value) {
		// if (value == 'male') {
		// return "<span style='color:red;font-weight:bold;'>男</span>";
		// } else if (value == 'female') {
		// return "<span style='color:green;font-weight:bold;'>女</span>";
		// } else {
		// return "<span style='color:blue;font-weight:bold;'>未知</span>";
		// }
		// }

});
